API authentication হল একটি গুরুত্বপূর্ণ বিষয় যখন আপনি Django তে API তৈরি করেন এবং সেগুলিকে নিরাপদ করতে চান। API এর মাধ্যমে ব্যবহারকারীরা বিভিন্ন ধরনের ডাটা অ্যাক্সেস করতে পারে, সুতরাং যথাযথ authentication ব্যবস্থা থাকা জরুরি। Django তে API authentication এর জন্য বেশ কিছু পদ্ধতি রয়েছে, যার মধ্যে সবচেয়ে জনপ্রিয় দুটি হল Token Authentication এবং OAuth Authentication।
১. Token Authentication
Token Authentication একটি সাধারণ এবং নিরাপদ পদ্ধতি যেখানে একটি ব্যবহারকারী লগইন করার পরে তাকে একটি ইউনিক টোকেন প্রদান করা হয়। এই টোকেনটি ব্যবহারকারীর পরিচয় যাচাই করার জন্য পরবর্তী রিকোয়েস্টে পাঠানো হয়। Django তে Token Authentication সেটআপ করতে Django REST Framework (DRF) ব্যবহার করা হয়।
Token Authentication এর মাধ্যমে API Authentication সেটআপ
- Django REST Framework ইনস্টল করা
প্রথমে আপনাকে Django REST Framework এবং djangorestframework-simplejwt প্যাকেজ ইনস্টল করতে হবে। এই প্যাকেজটি JWT (JSON Web Token) সাপোর্ট প্রদান করে।
pip install djangorestframework djangorestframework-simplejwt
- INSTALLED_APPS এ REST Framework যুক্ত করা
settings.py ফাইলে INSTALLED_APPS এ Django REST Framework যুক্ত করতে হবে।
# settings.py
INSTALLED_APPS = [
# অন্যান্য অ্যাপস
'rest_framework',
'rest_framework.authtoken', # Token Authentication এর জন্য
]
- Token Authentication মডিউল কনফিগার করা
এখন আপনাকে TokenAuthentication সেটআপ করতে হবে। settings.py ফাইলে DRF এর ডিফল্ট কনফিগারেশন সেট করুন।
# settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
- Token মডেল তৈরি এবং মাইগ্রেশন
এখন আপনাকে Token মডেল তৈরি এবং মাইগ্রেট করতে হবে।
python manage.py migrate
- Token তৈরি করা
ব্যবহারকারী যদি লগইন করে, তবে আপনি তাকে একটি Token প্রদান করবেন। Django REST Framework এ obtain_auth_token ভিউ দিয়ে এটি করা যায়।
urls.py তে URL কনফিগার করুন:
# urls.py
from django.urls import path
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
path('api-token-auth/', obtain_auth_token), # Token authentication endpoint
]
এখন, ব্যবহারকারী যখন POST /api-token-auth/ এ তার ইউজারনেম এবং পাসওয়ার্ড পাঠাবে, তখন তাকে একটি টোকেন দেওয়া হবে যা পরবর্তী API রিকোয়েস্টে ব্যবহার করা যাবে।
২. OAuth Authentication
OAuth হল একটি প্রোটোকল যা ইউজারের অথেনটিকেশন এবং অথোরাইজেশন পরিচালনা করার জন্য ব্যবহার করা হয়। এটি ইউজারের লগইন ডেটা সরাসরি শেয়ার না করে, সেকেন্ড পার্টি অ্যাপ্লিকেশনকে ইউজারের ডেটা অ্যাক্সেস করার অনুমতি দেয়। Django তে OAuth ব্যবহার করতে আপনি django-oauth-toolkit প্যাকেজ ব্যবহার করতে পারেন।
OAuth Authentication এর মাধ্যমে API Authentication সেটআপ
django-oauth-toolkitইনস্টল করা
প্রথমে আপনাকে django-oauth-toolkit প্যাকেজ ইনস্টল করতে হবে।
pip install django-oauth-toolkit
- INSTALLED_APPS এ
oauth2_providerযুক্ত করা
এটি settings.py তে INSTALLED_APPS এ যোগ করুন।
# settings.py
INSTALLED_APPS = [
# অন্যান্য অ্যাপস
'oauth2_provider',
]
- URLs কনফিগারেশন
OAuth রাউটগুলো urls.py ফাইলে যুক্ত করতে হবে।
# urls.py
from django.urls import path, include
urlpatterns = [
path('auth/', include('oauth2_provider.urls', namespace='oauth2_provider')),
# অন্যান্য API রাউট
]
- OAuth Application তৈরি করা
এখন আপনি OAuth2 Application তৈরি করবেন। এটি তৈরি করতে Django অ্যাডমিন প্যানেল ব্যবহার করতে পারেন।
- Django অ্যাডমিনে লগইন করুন এবং OAuth2 Provider সেকশনে যান।
- একটি নতুন Application তৈরি করুন। এখানে আপনি client id এবং client secret পাবেন, যা আপনাকে OAuth প্রক্রিয়ায় ব্যবহার করতে হবে।
- OAuth Authentication কনফিগারেশন
Django REST Framework তে OAuth ব্যবহার করার জন্য, আপনাকে DEFAULT_AUTHENTICATION_CLASSES এ OAuth authentication ক্লাস যোগ করতে হবে।
# settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
],
}
এখন OAuth এর মাধ্যমে API Authentication সম্পন্ন হবে। আপনি টোকেন ব্যবহারকারীকে পাঠিয়ে তার অনুমোদন পেতে পারেন।
৩. Token এবং OAuth এর মধ্যে পার্থক্য
| ফিচার | Token Authentication | OAuth Authentication |
|---|---|---|
| অথেনটিকেশন টাইপ | স্ট্যাটিক টোকেন ব্যবহার করে | Dynamic authorization (third-party) |
| ব্যবহার | API এর মধ্যে একক ইউজারের অথেনটিকেশন | তৃতীয় পক্ষের অ্যাপ্লিকেশন দ্বারা ইউজারের ডেটা অ্যাক্সেস |
| সিকিউরিটি | সিম্পল, তবে সিকিউরিটি রিস্ক থাকতে পারে | অধিক সিকিউর, কারণ ইউজারের পাসওয়ার্ড শেয়ার হয় না |
| ইউজার ইন্টারঅ্যাকশন | ইউজারকে প্রতিবার টোকেন পাঠাতে হয় | একবার অথোরাইজেশন, তারপর অ্যাক্সেস টোকেন ব্যবহার |
সারাংশ
- Token Authentication API এর জন্য একটি সহজ পদ্ধতি, যেখানে ব্যবহারকারী লগইন করার পরে একটি টোকেন পায় এবং এটি API রিকোয়েস্টের সঙ্গে পাঠানো হয়।
- OAuth Authentication একটি শক্তিশালী অথেনটিকেশন প্রোটোকল, যা ইউজারের ডেটা এক্সেসের জন্য অনুমতি প্রদান করে, তাতে ইউজারের পাসওয়ার্ড শেয়ার করা হয় না।
- Django তে উভয় পদ্ধতিই ব্যবহার করা সম্ভব এবং আপনার প্রোজেক্টের প্রয়োজন অনুযায়ী যেকোনো একটি পদ্ধতি বেছে নিতে পারেন।
Read more